ヘッダーをスキップ
Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド
リリース7.0
E05172-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

USERMANAGEDキャッシュ・グループ

システム管理キャッシュ・グループ(READONLY、AWTおよびSWT)で必要な処理が行われない場合は、CREATE USERMANAGED CACHE GROUP文を使用して、カスタマイズされたキャッシュ動作を実装するユーザー管理キャッシュ・グループを作成できます。

例: USERMANAGEDキャッシュ・グループの作成

この項では、カスタマイズされたキャッシュ・グループの作成に使用するCREATE USERMANAGED CACHE GROUP文をいくつか示します。

この項では、次の例を示します。

例2.1

この例では、単一表CUSTOMERに対して、UpdateAnywhereCustomersというUSERMANAGEDキャッシュ・グループを作成します。TimesTenまたはOracleいずれかのCUSTOMER表への更新は、他方に双方向に伝播されます。

図2.11 単純なUSERMANAGEDキャッシュ・グループ

この例では、AUTOREFRESH属性が設定されているため、キャッシュ・グループは30秒ごとにOracleから増分更新されます。ユーザーはUSER1です。表記述内のPROPAGATE属性は、TimesTenキャッシュ内のCUSTOMER表への更新がOracleへ伝播されることを示しています。

CREATE USERMANAGED CACHE GROUP UpdateAnywhereCustomers

AUTOREFRESH

       MODE INCREMENTAL

       INTERVAL 30 SECONDS

FROM

USER1.CUSTOMER (CUSTID INTEGER NOT NULL,

       NAME VARCHAR2(100) NOT NULL,

       ADDR VARCHAR2(100),

       ZIP VARCHAR2(10),

       PRIMARY KEY (CUSTID)),

       PROPAGATE);

例2.2

この例では、WesternCustomersというUSERMANAGEDキャッシュ・グループを作成します。このキャッシュ・グループには、4つの関連表CUSTOMER、ORDERTAB、ORDERDETAILSおよびCUSTINTERESTが含まれています。

図2.12 複雑なUSERMANAGEDキャッシュ・グループ

WesternCustomersキャッシュ・グループ内の各表には主キーがあります。キャッシュ・グループ内の表は、外部キー関係を介して互いにリンクされています。CUSTOMER表は、ルート表であるため、キャッシュ・グループ内の別の表を参照しません。ルート表には、ルート表にキャッシュされる行を制限するWHERE句が含まれています。

PROPAGATE属性は、キャッシュ内の表に対するすべての変更が、対応するOracle表にコミット時に自動的に伝播されるように指定します。

CREATE USERMANAGED CACHE GROUP WesternCustomers

    FROM

    USER1.CUSTOMER (

       CUSTID INTEGER NOT NULL,

       NAME VARCHAR2(100) NOT NULL,

       ADDR VARCHAR2(100),

       ZIP VARCHAR2(10),

       REGION VARCHAR2(10),

       PRIMARY KEY (CUSTID)),

       PROPAGATE)

       WHERE (CUSTOMER.REGION = 'Western'),

    USER1.ORDERTAB(ORDERID NUMBER NOT NULL,

       CUSTID INTEGER NOT NULL,

       PRIMARY KEY (ORDERID),

       FOREIGN KEY (CUSTID) REFERENCES CUSTOMER(CUSTID),

       PROPAGATE),

    USER1.ORDERDETAILS(ORDERID NUMBER NOT NULL,

       ITEMID NUMBER NOT NULL,

       QUANTITY NUMBER NOT NULL,

       PRIMARY KEY (ORDERID, ITEMID),

       FOREIGN KEY (ORDERID) REFERENCES ORDERTAB(ORDERID),

       PROPAGATE),

    USER1.CUSTINTEREST(CUSTID INTEGER NOT NULL,

       INTEREST VARCHAR2(10) NOT NULL,

       PRIMARY KEY (CUSTID, INTEREST),

       FOREIGN KEY (CUSTID) REFERENCES CUSTOMER(CUSTID),

       PROPAGATE);